package com.lry.basic.jvm.rpc;

/**
 * @author:刘仁有
 * @desc:
 * @email:953506233@qq.com
 * @data:2019/12/23
 */
public class ByteUtils {

    public static int bytes2Int(byte[]bytes ,int start,int len){
        int sum = 0;
        int end = start+len;
        for(int i=start;i<end;i++){
            int n = ((int)bytes[i])&0xff;
            n<<=(--len)*8;
            sum+=n;
        }
        return sum;
    }

    public static byte[] int2Bytes(int value,int len){
        byte[] bytes = new byte[len];
        for(int i=0;i<len;i++){
            bytes[len-i-1] = (byte)((value>>8*i)&0xff);
        }
        return bytes;
    }

    public static String bytes2String(byte[]bytes,int start,int len){
        return new String(bytes,start,len);
    }

    public static byte[] string2Bytes(String str){
        return str.getBytes();
    }

    public static byte[] bytesReplace(byte[]originBytes ,int offset,int len,byte[]replaceBytes){
        byte[]newBytes = new byte[originBytes.length+(replaceBytes.length-len)];
        //复制offset前面的到newBytes
        System.arraycopy(originBytes,0,newBytes,0,offset);
        //复制replaceBytes的全部到newBytes
        System.arraycopy(replaceBytes,0,newBytes,offset,replaceBytes.length);
        //复制originBytes offset+len后的到newBytes
        System.arraycopy(originBytes,offset+len,newBytes,offset+replaceBytes.length,originBytes.length-offset-len);
        return newBytes;
    }
}
